package com.example.rwq_test.anno.customAnno.EventAnnotation.hadler;

import com.example.rwq_test.anno.customAnno.EventAnnotation.event.Event;

import java.util.concurrent.TimeUnit;

/**
 * @Description 抽象处理器
 *
 * @Author renweiqiang
 * @Date 2024/4/28 上午10:43
 */
public abstract class AbstractHandler {
    /**
     * 构建事件抽象方法
     *
     */
    public abstract Event buildEvent();
    /**
     * 处理事件开始抽象方法
     *
     * @param event
     */
    public abstract void handleEventStart(Event event);
    /**
     * 处理事件抽象方法
     *
     * @param event
     */
    public abstract void handleEvent(Event event);
    /**
     * 处理事件结束抽象方法
     *
     * @param event
     */
    public abstract void handleEventFinish(Event event);

    /**
     * 公共部分处理
     */
    protected void handlePublic(Event event) {
        doPublicFlow();
    }

    /**
     * 处理公共流程
     */
    private void doPublicFlow() {
        try {
            System.out.println("doPublicFlow...");
            TimeUnit.MILLISECONDS.sleep(50);
        } catch (InterruptedException e) {

        }
    }
}
